#include <stdio.h>
#include <stdlib.h>

int main() {
    int numbers[100];  
    int length = 0; // 实际输入的元素个数
    int num;

    // 从标准输入读取一系列整数，直到遇到非数字或文件结束
    while (scanf("%d", &num) == 1) {
        numbers[length++] = num;
    }

    int result[100]; // 存储所有可能的步数结果
    int result_count = 0; // 记录结果数量

    // 遍历所有从第一个元素开始的有效步长
    for (int i = 1; i < length / 2; i++) {
        int step = 1; // 初始化步数为1，因为第一步已经走出
        int index = i; // 将索引设为当前步长

        // 只要没有走到数组的最后一个元素
        while (index < length - 1) {
            index += numbers[index]; // 按照当前索引位置的数字值前进
            step++; // 每走一步，步数加1
        }

        // 如果恰好到达数组的最后一个元素
        if (index == length - 1) {
            result[result_count++] = step; // 将步数结果存入结果数组
        }
    }

    // 如果有有效的步数结果
    if (result_count > 0) {
        int min_step = result[0];
        // 找出最小的步数
        for (int i = 1; i < result_count; i++) {
            if (result[i] < min_step) {
                min_step = result[i];
            }
        }
        printf("%d\n", min_step); // 输出最小的步数
    } else {
        printf("-1\n"); // 如果没有结果，输出-1
    }

    return 0;
}
